import axios from 'axios'
import store from '@/store'
import { Message } from 'element-ui'
import router from '@/router/index'
const request = axios.create({
  baseURL: process.env.VUE_APP_BASE_API,
  timeout: 5000
})

// 声明一个变量存储token过期时间
const timer = 24 * 60 * 60 * 1000
// 添加请求拦截器
request.interceptors.request.use(
  config => {
    // 如果有token
    if (store.state.user.token) {
      // 如果请求是登录或者注册，是不能请求头添加token的
      if (config.url !== '/auth/local' && config.url !== '/auth/local/register') {
        config.headers.Authorization = `Bearer ${store.state.user.token}`
        // 存登录的时间戳

        // const loginTime = store.state.user.loginTime
        const loginTime = localStorage.getItem('loginTime')
        // 存进行操作时的时间戳
        const curTime = Date.now()
        // 如果操作时候的时间戳大于设置的token过期时间，就退出登录
        if (curTime - loginTime > timer) {
          // 调用vuex actions里面的退出登录
          store.dispatch('user/logout')
          // 回到登录页
          router.push('/login')
          Message.error('登录已过期，请重新登陆--前端')
          // return Promise.reject(new Error('登录已过期，请重新登陆--前端'))
        }
      }
    }

    return config
  }, function(error) {
    // 对请求错误做些什么
    return Promise.reject(error)
  })
// ************************************************************************************************************响应拦截器有问题
// 添加响应拦截器
request.interceptors.response.use(function(response) {
  // 对响应数据做点什么
  // console.log('响应', response)
  return response
}, function(error) {
  // 对响应错误做点什么
  // console.log(error)
  return error
})

export default request

